---@diagnostic disable: lowercase-global, undefined-global, trailing-space --- 禁用特定的 Lua 诊断警告：小写全局变量、未定义全局变量、行尾空格

---@return table 设置了元表的环境表。
GLOBAL.setmetatable(env,{__index=function(t,k) return GLOBAL.rawget(GLOBAL,k) end}) --- 设置元表，实现对 GLOBAL 的透明访问。当查找 env 中不存在的键 k 时，会调用 __index 元方法，该方法从 GLOBAL 表中原始获取 (rawget) 键 k 对应的值。


local modid = 'ShadowFieldExciter' --- 将 mod 的名称 'ShadowFieldExciter' 赋值给局部变量 modid。

---导入核心模块文件
modimport('scripts/core_'..modid..'/data/tuning.lua')  --- (DS 修改) 使用 `require` 函数加载调谐配置文件。
TUNING[string.upper('CONFIG_'..modid..'_LANG')] = GetModConfigData(modid..'_lang') --- 从 mod 配置中获取语言设置 (例如 'en' 或 'cn')，并将其存储到全局 TUNING 表中。

modimport('scripts/core_'..modid..'/languages/'..TUNING[string.upper('CONFIG_'..modid..'_LANG')]..'.lua')  -- (DS 注释) 根据之前设置的语言配置，动态加载对应的语言文件。需要后续处理语言加载。

local db = TUNING.MOD_ShadowFieldExciter

PrefabFiles = { --- 初始化一个名为 PrefabFiles 的表（数组），用于存储预制体文件名。
	'shadowfieldexciter',  --- 添加字符串 'shadowfieldexciter' 到 PrefabFiles 列表，代表主要物品的预制体。
    'shadowhandsfx',       --- 添加字符串 'shadowhandsfx' 到 PrefabFiles 列表，代表阴影手特效的预制体。
} --- 结束 PrefabFiles 表的定义。


Assets = { --- 初始化一个名为 Assets 的表（数组），用于存储资源定义。
    -- 制作栏图标资源定义
    Asset("ATLAS", "images/inventoryimages/shadowfieldexciter.xml"),  --- 调用 Asset 函数定义一个图集 (ATLAS) 类型的资源，其配置文件位于 "images/inventoryimages/shadowfieldexciter.xml"。
    Asset("IMAGE", "images/inventoryimages/shadowfieldexciter.tex"),  --- 调用 Asset 函数定义一个图像 (IMAGE) 类型的资源，其纹理文件位于 "images/inventoryimages/shadowfieldexciter.tex"。

    -- 自定义用户界面 (UI) 资源定义
    Asset("ATLAS","images/my_futuristic_ui/my_futuristic_ui.xml"),  --- 调用 Asset 函数定义自定义 UI 的图集资源，配置文件位于 "images/my_futuristic_ui/my_futuristic_ui.xml"。
    Asset("IMAGE","images/my_futuristic_ui/my_futuristic_ui.tex"),  --- 调用 Asset 函数定义自定义 UI 的纹理资源，纹理文件位于 "images/my_futuristic_ui/my_futuristic_ui.tex"。
    -- 动画资源定义
    --Asset("ANIM","anim/"..db.Prefab_ID..".zip"),  -- ShadowFieldExciter的动画文件
    Asset("ANIM","anim/sfe_interface.zip"),  --- 调用 Asset 函数定义一个动画 (ANIM) 类型的资源，动画数据位于 "anim/sfe_interface.zip"。
    Asset("ANIM","anim/shadowhandsfx.zip"),  --- 调用 Asset 函数定义阴影手特效的动画资源，动画数据位于 "anim/shadowhandsfx.zip"。

    -- 音效资源定义
    Asset("SOUNDPACKAGE","sound/Shadow_Field_Exciter_soundfx.fev"),  --- 调用 Asset 函数定义一个音效包 (SOUNDPACKAGE) 类型的资源，FMOD 事件文件位于 "sound/Shadow_Field_Exciter_soundfx.fev"。
    Asset("SOUND","sound/Shadow_Field_Exciter_soundfx.fsb"),  --- 调用 Asset 函数定义一个音效库 (SOUND) 类型的资源，FMOD Sound Bank 文件位于 "sound/Shadow_Field_Exciter_soundfx.fsb"。
} --- 结束 Assets 表的定义。


STRINGS 	= GLOBAL.STRINGS
RECIPETABS 	= GLOBAL.RECIPETABS
Recipe 		= GLOBAL.Recipe
TECH		= GLOBAL.TECH
Ingredient 	= GLOBAL.Ingredient
IsDLCEnabled = GLOBAL.IsDLCEnabled
RECIPE_GAME_TYPE = GLOBAL.RECIPE_GAME_TYPE
db.ROG_DLC = rawget(GLOBAL,"REIGN_OF_GIANTS") and IsDLCEnabled and IsDLCEnabled(GLOBAL.REIGN_OF_GIANTS)
db.CAPY_DLC = rawget(GLOBAL,"CAPY_DLC") and IsDLCEnabled and IsDLCEnabled(GLOBAL.CAPY_DLC)
db.HAM_DLC = rawget(GLOBAL,"PORKLAND_DLC") and IsDLCEnabled and IsDLCEnabled(GLOBAL.PORKLAND_DLC)


--添加配方
if db.CAPY_DLC or db.HAM_DLC then 
    local shadowfieldexciter = Recipe('shadowfieldexciter',
    {
		Ingredient("cutstone",2),
		Ingredient("nightmarefuel",2), 
		Ingredient("transistor",2),
	},RECIPETABS.MAGIC, {MAGIC = 0},RECIPE_GAME_TYPE.COMMON,"shadowfieldexciter_placer")  --- 创建一个新的 Recipe 对象，名称为 'shadowfieldexciter'，包含所需的材料和科技要求。
shadowfieldexciter.atlas = "images/inventoryimages/shadowfieldexciter.xml"  --- 设置配方的图集路径。
else
    local shadowfieldexciter = Recipe('shadowfieldexciter',
    {
		Ingredient("cutstone",2),
		Ingredient("nightmarefuel",2), 
		Ingredient("transistor",2),
	},RECIPETABS.MAGIC, {MAGIC = 0},"shadowfieldexciter_placer")  --- 创建一个新的 Recipe 对象，名称为 'shadowfieldexciter'，包含所需的材料和科技要求。
shadowfieldexciter.atlas = "images/inventoryimages/shadowfieldexciter.xml"  --- 设置配方的图集路径。

end

-- 设置模组配置数据到tuning表中
db.FindItemsRadius = GetModConfigData(db.MODID..'_PickRadius') * 4
db.LightRadius = GetModConfigData(db.MODID..'_LightRadius') * 4
db.PickInterval = GetModConfigData(db.MODID..'_PickInterval')
db.HarvestCookpot = GetModConfigData(db.MODID..'_HarvestCookpot')  --- 获取配置项 'HarvestCookpot' 的值，决定是否收集烹饪锅内的物品。

-- 导入钩子模块 (Hooks) - 这些模块通常用于修改或扩展游戏的原有行为
local files_hook = { --- 定义一个包含所有需要加载的钩子文件名的列表。
    'ChangeContainerWidget',  --- 字符串 'ChangeContainerWidget'，代表修改容器界面的钩子。
} --- 结束钩子文件列表定义。
for _,v in ipairs(files_hook) do --- 使用 `ipairs` 遍历 `files_hook` 列表。 `_` 表示忽略索引，`v` 是当前文件名（值）。
	modimport('scripts/core_'..modid..'/hooks/'..v..'.lua')  --- (DS 修改) 动态加载列表中的每个钩子文件。
end --- 结束循环。
